A cable television or “CATV” system is a television broadcasting system that uses coaxial cable or fiber optic cable to distribute a broadband signal containing many separate television program channels that are frequency-multiplexed onto the cable. By allocating the frequency spectrum of one or more television program channels for data transmission, CATV systems are also used to carry data to and from CATV subscribers.
Data on a cable television system is sent as packets that resemble well-known Ethernet packets. Each data packet can have up to several hundred data bytes preceded by several critical data bytes that comprise the frame's header. Among other things, the header includes a preamble, a frame type, a source address and a destination address. A cyclic redundancy check or CRC is appended to the end of the packet for error detection.
Subscribers' computers are coupled to the cable via a cable modem. Each cable modem is assigned an address by the head end when the modem is turned on. The modem's address effectively identifies the computer to which it is coupled and enables each subscriber to have individualized connections to the Internet.
Downstream data packets are those sent from the head end of the cable system to the subscribers. Upstream packets are those sent from the subscribers to the head end. Once a data packet is physically transmitted onto the cable, all of the computers that are coupled to the cable can “see” the packets. By using Ethernet-like data frames however, the cable modems of the system read only the downstream data packets that are addressed to it and ignore all other packets. When packets are sent upstream, the cable modem provides to the data packets, the address assigned to the cable modem. That address of the sending cable modem effectively identifies the subscriber from which the packets originated and in so doing, also provide an address to which responsive packets can be sent.
At the top or “head end” of a cable television system is a cable modem termination system or “CMTS,” a function of which is to provide complementary functionality to the subscriber's cable modems so as to enable data connectivity to a wide-area network like the Internet. The CMTS performs a variety of critical functions in a cable data system, including among other things, cable modem address assignments and data packet address translation by which packets received by the CMTS from an Internet connection are addressed (directed) to the proper cable modem. A CMTS also functions as a switch by taking upstream packets from the cable modems and routing them toward their proper destinations.
A CMTS includes one or more ports through which data is received and sent. Different ports are typically coupled to different pathways such that different ports lead to different logical destination addresses. By way of example, data from a subscriber received at one port of the CMTS might need to be routed out a different port in order for the packets to be routed to their destination (as determined by the destination address in the packet's header). In so doing, a CMTS receives upstream data packets, either from subscribers or Internet servers, and routes said packets to the port on which the intended recipient, or server for that recipient, resides as dictated by the packet's destination address. (A description of CMTS functionality can be found on the web site of CableLabs®, which is a non-profit research and development consortium of cable television operators within North and South America.
Most cable data systems now have more data server subscribers than there are channels that are available to be allocated to carrying data and as a result, cable data system subscribers share the data capacity of the frequency spectrum allocated to carry data. As the number of subscribers on a cable data system increases, bandwidth available to each subscriber (i.e., the service level) decreases. Stated alternatively, on a cable data system, responsiveness decreases as the number of users increases.
Those of ordinary skill in the art of computer networks in general, and cable data systems in particular, are familiar with the concept of “quality of service.” Quality of service is concept of guaranteeing a throughput or a data transfer level. It is anticipated that next-generation cable data systems will offer customers guaranteed bandwidths (data rates) to customers willing to pay for it. Customers who pay for data rate guarantees will have their data packets routed through the cable data system ahead of lower-paying customers. The concept of being able to guarantee (and to be able to truly provide) different service or priority levels allows cable service providers the opportunity to provide better Internet service, as measured by connection bandwidth, to needy customers while charging a premium rate. Tiered service is expected to increase revenue for cable service providers.
One way of providing service levels is to organize Internet traffic into data flows. Data packets sent from the head end of the cable data system to a particular cable data system subscriber can be considered to be as one “data flow.” Similarly, the upstream packets from the same customer, or some other customer can be considered to be another “data flow.” By knowing the source and destination addresses of data packets on a cable data system, the data flows that they represent can be allotted different service (i.e., priority) levels by reading from a class of service list that a particular subscriber is entitled to.
Part of the job of a CMTS is to route incoming packets to their destinations, as determined by their packet destination addresses. In a CMTS, this usually requires that packets received at one port need to be switched out of the CMTS on a different port that is connected to a different physical or logical pathway leading to different logical destinations. In order to provide different service levels, data packets are stored in priority queues, which are known to those of skill in the networking art to be multi-element lists, each element of which is assigned a priority value or level that determines when the element is to be removed from the queue
The primary task behind any Ethernet frame-based scheduling algorithm is to examine the contents of the multiple queues that are aimed at a particular shared resource, e.g., a channel time-slot on the cable or a port of the CMTS, and then decide which queue should transmit the next Ethernet frame to that shared resource. A relative scheduling algorithm must make decisions regarding the relative treatment each of the queues based on the priority level associated with that particular queue. In general, any scheduling algorithm must make trade-offs between fairness, delay, and implementation complexity.
Many theoretical models for scheduling have been presented in the literature. The Generalized Processor Sharing (“GPS”) algorithm (A. K. Parekh and R. G. Gallager, “A generalized processor sharing approach to flow control—the single node case,” in IEEE INFOCOM '92, Vol. 2, pp. 915-924, May 1992.) is generally considered to be a fair scheduling algorithm, because it attempts to follow a fluid flow model that transmits (and mixes) output traffic from various active queues at rates proportional to their assigned weights. Unfortunately, the ideal GPS algorithm requires that the arriving packets be broken down into infinitely divisible parts, which is not practical in a data system using variable size packets like Ethernet frames and tends to complicate the algorithm's implementation.
One approach that attempts to approximate the GPS algorithm is the Weighted Fair Queuing (“WFQ”) algorithm disclosed by A. Demers, S. Keshav, and S. Shenker, in “Analysis and simulation of a fair queuing algorithm,” published in Internetworking: Research an Experience, Vol. 1, No. 1, pp. 3-26, 1990). A limitation of this implementation is maintaining desirable latency performance of low-latency traffic, such as Voice-over-Internet Protocol (VoIP) service, during periods of traffic bursts.
Another approach that attempts to provide fair service includes the CORR algorithm disclosed by D. Saha, S. Mukherjee, and S. Tripath, as “Carry-Over Round Robin: A simple cell scheduling mechanism for ATM networks” and Deficit Round Robin Queuing (M. Sheerdhar and G. Varghese, “Efficient fair queuing using deficit round robin”). However, these algorithms distort fairness when a particular queue is filled with very long packets while other queues are filled with very short packets. In such a situation, the queue with the long frames will steal more than its fair share of bandwidth on the shared resource.
A method and apparatus that monitors the latency of every packet passing through the system and uses that information to dynamically adjust (in real time) the performance of the scheduling algorithm would provide improved queuing of data flows in a cable modem termination system and quality of service level differentiation. Such a method would be an improvement over the prior art.